<!-- .\" @(#)PAPI_flops    0.10 00/05/18 CHD; from S5 -->
<!-- .TH PAPI_flips 3 "September, 2004" "PAPI Programmer's Reference" "PAPI" -->
<HTML>
<HEAD>
<TITLE>
Manual Page - PAPI_flops(3)</TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">

<STYLE TYPE="text/css">

<!--

p

{font-family: Verdana, Helvetica, Arial, sans-serif}



.style

{font-family: Verdana, Helvetica, Arial, sans-serif}



td.navBar A:link

{color: #ddd8d2;

font-weight: bold;

text-decoration: none}



td.navBar A:visited

{color: #ccc9c5;

font-weight: bold;

text-decoration: none}



td.navBar A:hover

{color: #ffffff}



.navBar

{color: #77797c;

font-family: Verdana, Helvetica, Arial, sans-serif;

font-size:  11px;

text-transform: uppercase}



a:visited

{color: #50525f}



a:link

{color: #8b3409}



a:hover

{color: #660000}



a:active

{background-color: #b1afad}



.footerNote

{background-color: #ffffff;

background-image: url(../images/line.gif);

background-position: right top;

background-repeat: repeat-x;

color: #77797c;

font-family: Verdana, Helvetica, Arial, sans-serif;

font-size:  10px}



BODY

{font-family: Verdana, Helvetica, Arial, sans-serif}

-->

</STYLE> <SCRIPT LANGUAGE="JavaScript">

<!--

function MM_swapImgRestore() { //v3.0

  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;

}



function MM_preloadimages() { //v3.0

  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();

    var i,j=d.MM_p.length,a=MM_preloadimages.arguments; for(i=0; i<a.length; i++)

    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}

}



function MM_findObj(n, d) { //v4.0

  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {

    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}

  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];

  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);

  if(!x && document.getElementById) x=document.getElementById(n); return x;

}



function MM_swapImage() { //v3.0

  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)

   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}

}

//-->

</SCRIPT> 

</HEAD>

<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LEFTMARGIN="0" TOPMARGIN="0" MARGINWIDTH="0" MARGINHEIGHT="0">

<TABLE WIDTH="101%" BORDER="0" CELLSPACING="0" CELLPADDING="0">

<TR>

<TD VALIGN="top" HEIGHT="75">

<TABLE WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="0" HEIGHT="75">

<TR>

<TD BACKGROUND="../images/menubg95.jpg" HEIGHT="75">

<TABLE WIDTH="760" BORDER="0" CELLSPACING="0" CELLPADDING="0" ALIGN="center" HEIGHT="75">

<TR VALIGN="bottom">

<TD WIDTH="760" ALIGN="center" HEIGHT="50" COLSPAN="2">

<IMG SRC="../images/headertop.jpg" WIDTH="760" HEIGHT="50"></TD>

</TR>

<TR>

<TD HEIGHT="10" ALIGN="center" VALIGN="top" BGCOLOR="#333333" WIDTH="135">

<IMG SRC="../images/logoleft.jpg" WIDTH="135" HEIGHT="25" VSPACE="0" HSPACE="0" ALIGN="left">

</TD>

<TD CLASS="navBar" HEIGHT="25" ALIGN="center" VALIGN="middle" BGCOLOR="#333333" NOWRAP WIDTH="625" BACKGROUND="../images/menubg.jpg">

<CENTER>

<A HREF="http://icl.cs.utk.edu/papi/">

PAPI HOME

</A>

</CENTER>

</TD>

</TR>

<TR>

<TD HEIGHT="10" ALIGN="center" VALIGN="top" BGCOLOR="FFFFFF" WIDTH="135">

<IMG SRC="../images/logobottom.jpg" WIDTH="135" HEIGHT="20" VSPACE="0" HSPACE="0" ALIGN="left">

</TD>

<TD CLASS="navBar" HEIGHT="10" ALIGN="center" VALIGN="bottom" BGCOLOR="FFFFFF" WIDTH="625">

<IMG SRC="../images/white.jpg" WIDTH="625" HEIGHT="20" VSPACE="0" HSPACE="0" ALIGN="left">

</TD>

</TR>

</TABLE>

</TD>

</TR>

</TABLE>

</TD>

</TR>

<TR>

<TD VALIGN="top">

<TABLE WIDTH="760" BORDER="0" CELLSPACING="0" CELLPADDING="0" ALIGN="center" CLASS="style">

<TR>

<TD CLASS="STYLE">

<!-- .SH NAME -->
<A name=0>

     <H3>NAME</H3>

</A>
<BLOCKQUOTE>
<!-- .nf -->
<PRE>
  PAPI_flips - PAPI High level: Simplified call to get Mflips/s, real and processor time
  PAPI_flops - PAPI High level: Simplified call to get Mflops/s, real and processor time
<!-- .fi -->
</PRE>
<P>
<!-- .SH SYNOPSIS -->
</BLOCKQUOTE>
<A name=contents></A><H3>CONTENTS</H3></A>
<BLOCKQUOTE>
<A HREF=#1>Synopsis</A><BR>
<A HREF=#2>Description</A><BR>
<A HREF=#3>Arguments</A><BR>
<A HREF=#4>Return Values</A><BR>
<A HREF=#5>Errors</A><BR>
<A HREF=#6>Notes</A><BR>
<A HREF=#7>Bugs</A><BR>
<A HREF=#8>See Also</A><BR>
</BLOCKQUOTE>
<A name=9>

     <H3>SYNOPSIS</H3>

</A>
<BLOCKQUOTE>
<!-- .B C Interface -->
<B>C Interface</B> <!-- .nf -->
<PRE>
<!-- .B #include <papi.h> -->
<B>#include &lt;papi.h&gt;</B> 
<!-- .BI "int PAPI_flips (float *" rtime ", float *" ptime ", long_long *" flpins ", float *" mflips ");" -->
<B>int PAPI_flips (float *</B><I>rtime</I><B>, float *</B><I>ptime</I><B>, long_long *</B><I>flpins</I><B>, float *</B><I>mflips</I><B>);</B> 
<!-- .BI "int PAPI_flops (float *" rtime ", float *" ptime ", long_long *" flpops ", float *" mflops ");" -->
<B>int PAPI_flops (float *</B><I>rtime</I><B>, float *</B><I>ptime</I><B>, long_long *</B><I>flpops</I><B>, float *</B><I>mflops</I><B>);</B> 
<!-- .fi -->
</PRE>
<!-- .B Fortran Interface -->
<B>Fortran Interface</B> <!-- .nf -->
<PRE>
<!-- .B #include "fpapi.h" -->
<B>#include fpapi.h</B> 
<!-- .BI PAPIF_flips(C_FLOAT\  real_time,\  C_FLOAT\  proc_time,\  C_LONG_LONG\  flpins,\  C_FLOAT\  mflips,\  C_INT\  check ) -->
<B>PAPIF_flips(C_FLOAT </B><I>real_time, </I><B>C_FLOAT </B><I>proc_time, </I><B>C_LONG_LONG </B><I>flpins, </I><B>C_FLOAT </B><I>mflips, </I><B>C_INT </B><I>check</I><B>)</B> 
<!-- .BI PAPIF_flops(C_FLOAT\  real_time,\  C_FLOAT\  proc_time,\  C_LONG_LONG\  flpops,\  C_FLOAT\  mflops,\  C_INT\  check ) -->
<B>PAPIF_flops(C_FLOAT </B><I>real_time, </I><B>C_FLOAT </B><I>proc_time, </I><B>C_LONG_LONG </B><I>flpops, </I><B>C_FLOAT </B><I>mflops, </I><B>C_INT </B><I>check</I><B>)</B> 
<!-- .fi -->
</PRE>
<P>
<!-- .SH DESCRIPTION -->
</BLOCKQUOTE>
<A name=2>

     <H3>DESCRIPTION</H3>

</A>
<BLOCKQUOTE>
<!-- .LP -->
<P>
The first call to
<!-- .B PAPI_flips(\|) "or" PAPI_flops(\|) -->
<B>PAPI_flips() or PAPI_flops()</B> will initialize the PAPI High Level interface, set up the counters
to monitor PAPI_FP_INS or PAPI_FP_OPS and PAPI_TOT_CYC events and start the counters.
Subsequent calls will read the counters and return total real time,
total process time, total floating point instructions or operations since the start
of the measurement and the Mflip/s or Mflop/s rate since latest call to
<!-- .B PAPI_flips(\|) "or" PAPI_flops(\|).                 -->
<B>PAPI_flips() or PAPI_flops().</B> A call to
<!-- .B PAPI_stop_counters(\|) " -->
<B>PAPI_stop_counters() </B> will stop the counters from running and then calls such as
<!-- .B PAPI_start_counters(\|) " -->
<B>PAPI_start_counters() </B> can safely be used.
<P>
<!-- .SH ARGUMENTS -->
</BLOCKQUOTE>
<A name=3>

     <H3>ARGUMENTS</H3>

</A>
<BLOCKQUOTE>
<!-- .I *rtime  -->
<I>*rtime</I> -- total realtime since the first PAPI_flops() call
<!-- .LP -->
<P>
<!-- .I *ptime  -->
<I>*ptime</I> -- total process time since the first PAPI_flops() call
<!-- .LP -->
<P>
<!-- .I *flpins, flpops  -->
<I>*flpins, flpops</I> -- total floating point instructions or operations since the first call
<!-- .LP -->
<P>
<!-- .I *mflips, *mflops  -->
<I>*mflips, *mflops</I> -- Mflip/s or Mflop/s achieved since the previous call
<P>
<!-- .SH RETURN VALUES -->
</BLOCKQUOTE>
<A name=4>

     <H3>RETURN VALUES</H3>

</A>
<BLOCKQUOTE>
On success, this function returns
<!-- .B "PAPI_OK." -->
<B>PAPI_OK.</B> <BR>
 On error, a non-zero error code is returned.
<P>
<!-- .SH ERRORS -->
</BLOCKQUOTE>
<A name=5>

     <H3>ERRORS</H3>

</A>
<BLOCKQUOTE>
 In addition to the possible errors returned by the various PAPI
low level calls, the following errors could also be returned:
<!-- .TP -->
<TABLE cellpadding=3><!-- tsb:  In addition to the possible errors returned by the various PAPI
 -->
<TR></TR><TR></TR>
<TR valign=top><TD colspan=2>
<!-- .B "PAPI_EINVAL" -->
<B>PAPI_EINVAL</B> </TD></TR><TR valign=top><TD width=6%>&nbsp;</TD><TD>
The counters were already started by something other than:
<!-- .B PAPI_flips(\|) "or" PAPI_flops(\|).                 -->
<B>PAPI_flips() or PAPI_flops().</B> <!-- .TP -->
</TD></TR>
<TR valign=top><TD colspan=2>
<!-- .B "PAPI_ENOEVNT" -->
<B>PAPI_ENOEVNT</B> </TD></TR><TR valign=top><TD width=6%>&nbsp;</TD><TD>
The floating point operations,floating point instruction or
total cycles event does not exist.
<!-- .TP -->
</TD></TR>
<TR valign=top><TD colspan=2>
<!-- .B "PAPI_ENOMEM" -->
<B>PAPI_ENOMEM</B> </TD></TR><TR valign=top><TD width=6%>&nbsp;</TD><TD>
Insufficient memory to complete the operation.
<P>
<P>
<!-- .SH NOTES -->
</TD></TR>
<TR></TR></TABLE></BLOCKQUOTE>
<A name=6>

     <H3>NOTES</H3>

</A>
<BLOCKQUOTE>
<!-- .LP -->
<P>
Mflip/s, or millions of floating point instructions per second, is defined
in this context as the number of instructions issued to the floating point
unit per second. It is usually calculated directly from a counter measurement
and may be different from platform to platform.
Mflop/s, or millions of floating point operations per second, is intended to
represent the number of floating point arithmetic operations per second.
Attempts are made to massage the counter values to produce the theoreticallly
expected value by, for instance, doubling FMA counts or subtracting floating point
loads and stores if necessary.
<!-- .I CAVEAT EMPTOR -->
<I>CAVEAT EMPTOR</I> <P>
<!-- .LP -->
<P>
<!-- .nf -->
<PRE>
<!-- .BR  PAPI_flops() and PAPI_flips() " may be called by:" -->
<B>PAPI_flops()</B>and<B>PAPI_flips()</B> may be called by: 
<!-- .B  \t -->
<B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</B> 
<!-- .B  \tthe user application program -->
<B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the user application program</B> 
<!-- .fi -->
</PRE>
<!-- .LP -->
<P>
<!-- .nf -->
<PRE>
<!-- .B  \t -->
<B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</B> 
<!-- .BR  PAPI_flops() " contains calls to:" -->
<B>PAPI_flops()</B> contains calls to: 
<!-- .B  \t -->
<B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</B> 
<!-- .B  \tPAPI_perror() -->
<B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PAPI_perror()</B> 
<!-- .B  \tPAPI_library_init() -->
<B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PAPI_library_init()</B> 
<!-- .B  \tPAPI_get_hardware_info() -->
<B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PAPI_get_hardware_info()</B> 
<!-- .B  \tPAPI_create_eventset() -->
<B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PAPI_create_eventset()</B> 
<!-- .B  \tPAPI_add_event() -->
<B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PAPI_add_event()</B> 
<!-- .B  \tPAPI_start() -->
<B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PAPI_start()</B> 
<!-- .B  \tPAPI_get_real_usec() -->
<B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PAPI_get_real_usec()</B> 
<!-- .B  \tPAPI_accum() -->
<B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PAPI_accum()</B> 
<!-- .B  \tPAPI_shutdown() -->
<B>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PAPI_shutdown()</B> 
<!-- .fi -->
</PRE>
<P>
<!-- .SH BUGS -->
</BLOCKQUOTE>
<A name=7>

     <H3>BUGS</H3>

</A>
<BLOCKQUOTE>
These functions have no known bugs.
<P>
<!-- .SH SEE ALSO -->
</BLOCKQUOTE>
<A name=8>

     <H3>SEE ALSO</H3>

</A>
<BLOCKQUOTE>
<!-- .BR "PAPI_stop_counters (3)", "PAPI_ipc (3)", "PAPI_set_opt (3)" -->
<A HREF="papi_stop_counters.html">PAPI_stop_counters (3)</A> ,
<A HREF="papi_ipc.html">PAPI_ipc (3)</A> ,
<A HREF="papi_set_opt.html">PAPI_set_opt (3)</A> 
</BLOCKQUOTE>
<P><HR>
<TABLE width=100%><TR> <TD width=33%><I>PAPI Programmer&#146;s Reference</I></TD> <TD width=33% align=center>PAPI_flips (3)</TD> <TD align=right width=33%><I>September, 2004</I></TD> </TR></TABLE>
<HR SIZE="1">

</TD>

</TR>

</TABLE>

</TD>

</TR>

<TR>

<TD VALIGN="top">

<TABLE WIDTH="760" BORDER="0" CELLSPACING="0" CELLPADDING="5" ALIGN="center">

<TR>

<TD>

</TD>

</TR>

<TR>

<TD HEIGHT="92">

<TABLE WIDTH="760" BORDER="0" CELLSPACING="0" CELLPADDING="0" ALIGN="center" VSPACE="0" HSPACE="0">

<TR VALIGN="top">

<TD ALIGN="left" BACKGROUND="../images/stripes2.jpg" ROWSPAN="2">&nbsp;

 

</TD>

<TD ALIGN="right" HEIGHT="39" BACKGROUND="../images/stripes2.jpg" WIDTH="280">

<IMG SRC="../images/trans.gif" WIDTH="280" HEIGHT="63" VSPACE="0" HSPACE="0">

</TD>

<TD ALIGN="left" HEIGHT="63" WIDTH="200" BACKGROUND="../images/spinbg.jpg">

<A HREF="http://icl.cs.utk.edu/" ONMOUSEOUT="MM_swapImgRestore()" ONMOUSEOVER="MM_swapImage('Image10','','../images/spinlogo.gif',1)">

<IMG NAME="Image10" BORDER="0" SRC="../images/stable.gif" WIDTH="200" HEIGHT="63" HSPACE="0" VSPACE="0" ALIGN="left" ALT="Innovative Computing Laboratory">

</A>

</TD>

<TD ALIGN="left" HEIGHT="0" ROWSPAN="2" VALIGN="top" WIDTH="140">

<DIV ALIGN="left">

<IMG SRC="../images/trans.gif" WIDTH="140" HEIGHT="75" BORDER="0" ALIGN="left" VSPACE="0" HSPACE="0">

</DIV>

</TD>

<TD ALIGN="left" ROWSPAN="2" VALIGN="top" WIDTH="140">

<IMG SRC="../images/rd.jpg" WIDTH="140" HEIGHT="75" BORDER="0" ALIGN="right" VSPACE="0" HSPACE="0" ALT="2001 R&amp;D Winner">

</TD>

<TD ALIGN="right" ROWSPAN="3" VALIGN="top" BGCOLOR="#FFFFFF">&nbsp;

 

</TD>

</TR>

<TR VALIGN="top">

<TD ALIGN="center" HEIGHT="22" ROWSPAN="2" VALIGN="TOP">

<SPAN CLASS="FOOTERNOTE">

Contact PAPI: 

<A HREF="mailto:papi@cs.utk.edu">

papi@cs.utk.edu</A>

</SPAN>

</TD>

<TD ALIGN="center" HEIGHT="11" WIDTH="200">

<A HREF="http://www.cs.utk.edu/" ONMOUSEOUT="MM_swapImgRestore()" ONMOUSEOVER="MM_swapImage('Image11','','../images/cssigon.gif',1)">

<IMG NAME="Image11" BORDER="0" SRC="../images/cssigoff.gif" WIDTH="200" HEIGHT="11" ALIGN="left" HSPACE="0" VSPACE="0" ALT="Computer Science Department">

</A>

</TD>

</TR>

<TR VALIGN="top">

<TD ALIGN="left">&nbsp;

 

</TD>

<TD ALIGN="CENTER" HEIGHT="11" WIDTH="200" VALIGN="top">

<A HREF="http://www.utk.edu/" ONMOUSEOUT="MM_swapImgRestore()" ONMOUSEOVER="MM_swapImage('Image12','','../images/utsigon.gif',1)">

<IMG NAME="Image12" BORDER="0" SRC="../images/utsigoff.gif" WIDTH="200" HEIGHT="11" VSPACE="0" HSPACE="0" ALIGN="left" ALT="University of Tennessee">

</A>

</TD>

<TD ALIGN="left" HEIGHT="0" COLSPAN="2" VALIGN="top">&nbsp;

 

</TD>

</TR>

</TABLE>

</TD>

</TR>

</TABLE>

</TD>

</TR>

<TR>

<TD VALIGN="top">&nbsp;

 

</TD>

</TR>

</TABLE>

</BODY>

</HTML>

